時間的特徵(Temporal features)是指和時間相關或隨時間改變的特徵。
對於時間的特徵,我們可能會碰到下列情況:需要對變數做時區轉換(Time Zone conversion),轉換時要注意有些國家有多個時區,有些國家會有日光節約時間,Python下有pytz library 可以使用。
我們可以對時間資料進行資料分隔(Binning),例如我們可以對1天24小時做如下分隔:
Hour range| Bin ID| Bin Description
------------- | -------------
[5, 8)| 1 |Early Morning
[8, 11) |2| Morning
[11, 14)| 3 |Midday
[14, 19)| 4| Afternoon
[19, 22)| 5| Evening
[22-24) and (00-05] |6| Night
我們可以把時間資料轉成表示「趨勢」的特徵,當我們把 total spend 轉換成 Spend in last week, spend in last month, spend in last year 時,可以提供趨勢訊息給機器學習演算法,因為兩個總支出相同的客戶可能有完全不同的消費行為,例如在某一個期間,一個客戶可能隨時間漸漸增加消費,另一個客戶可能漸漸減少消費。
假日或某些活動事件(如發薪日),會影響消費行為,所以在做這方面的機器學習時,可以建立判斷是否接近這些日子的特徵,如 date_X_days_before_holidays 或 first_saturday_of_the_month。
df['2 day before holiday'] = df['Date'].isin(holidays-pd.DateOffset(2))
df['3 day after holiday'] = df['Date'].isin(holidays+pd.DateOffset(3))
兩個事件發生時間的差距對某些學習模型可能有關係,例如:消費者對廣告的反應的學習模型,我們可能假設隨時間經過,消費者對廣告失去興趣,所以我們可以增加一個時間差距特徵。
df['difference'] = df['user_interaction_date'] - df['published_doc_date']
空間變數(Spatial Features)表示一個地點在空間的位置。
空間變數可以是GPS座標(GPS-coordinates) - 經/緯度(lat. / long.),或者是街道地址、郵遞區號、城市、州省、 國家等,這些資料搭配GIS(地理資訊系統)資料可得到豐富資訊。如下圖中,商店飲料容器回收數(紅色圓圈)和外部地理資料(戶口普查的居民收入中位數)搭配,可充實偵測商店飲料容器回收詐騙的資料集。
圖片來源:https://www.slideshare.net/gabrielspmoreira/feature-engineering-getting-most-out-of-data-for-predictive-models-tdc-2017
空間變數衍生特徵包括:使用者位置與搜尋飯店的位置的距離(Expedia網站機器學習競賽),不可能的旅行速度(用於詐騙偵測)。